【AWS】aws-cliでIAMの管理ポリシー・インラインポリシーを操作する
はじめに
こんにちは植木和樹です。本日はaws-cliを用いたIAMのポリシーの操作コマンドがとても多くて戸惑ってしまったので、作業時にメモした内容を備忘録として掲載しました。
今年(2015年)の初めにIAMに管理ポリシー(Managed Policy)という新しい機能が追加されました。
- [AWS IAM] 経験者向けManaged Policy対応ガイド | Developers.IO
- 管理ポリシーとインラインポリシー - AWS Identity and Access Management
これまでのポリシーはインラインポリシー(Inline Policy)と呼ばれ、これに管理ポリシーが加わったわけです。これに伴いaws-cliのIAM関係のサブコマンドが大幅に追加されました。追加されたコマンドでどのような操作ができるか把握するために表にまとめて整理してみました。
IAMポリシー操作コマンド
操作 | インラインポリシー | 管理ポリシー |
---|---|---|
(カスタマー管理)ポリシーを作成する | - | create-policy |
(カスタマー管理)ポリシーを削除する | - | delete-policy |
管理ポリシーの一覧を取得する | - | list-policies |
管理ポリシーの概要を取得する | - | get-policy |
管理ポリシーの内容を取得する | - | get-policy-version |
Roleに適用されたポリシーの一覧を取得する | list-role-policies | list-attached-role-policies |
Roleに適用されたポリシーの内容を表示する | get-role-policy | get-policy / get-policy-version |
Roleにポリシーの適用する | put-role-policy | attach-role-policy |
Roleからポリシーを削除する | delete-role-policy | detach-role-policy |
今回インラインポリシーの適用対象をRoleにしたので、適用されたポリシー一覧はlist-role-policiesで取得できます。適用先がIAM Userであればlist-user-policiesになり、IAM Groupであればlist-group-policiesになります。同様にattach-role-policyは、IAM Userだとattach-user-policy、IAM Groupだとにattach-group-policyなります。コマンド名を類推しやすい命名規則ですね。
(おまけ)aws-cliでAWS管理ポリシーやカスタマー管理ポリシーのみ表示する
管理ポリシーの一覧を取得するlist-policiesコマンドはデフォルトではすべての管理ポリシーを一覧表示します。ただAWS管理ポリシーの数はとても多いため、自分が作成したポリシーを一覧から探すのが大変です。そんな時は--scopeオプションをつけるとAWS管理ポリシーのみ、またはカスタマー管理ポリシーを表示することができます。
カスタマー管理ポリシーのみ表示する
$ aws iam list-policies --scope Local
AWS管理ポリシーのみ表示する
$ aws iam list-policies --scope AWS
まとめ
AWSのサービスは日々増えていくため、ユーザーに適切な権限を与えようとすると頻繁にポリシー修正が必要になります。作成したポリシーはぜひgitなどで更新理由とともに管理しておきたいところです。そのためにも手元で修正→適用→テストがしやすいようaws-cliでのポリシー操作を身につけておきたいですね。